﻿/*************************************************************************************
   
   Toolkit for WPF

   Copyright (C) 2007-2020 Xceed Software Inc.

   This program is provided to you under the terms of the XCEED SOFTWARE, INC.
   COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at 
   https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md 

   For more features, controls, and fast professional support,
   pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/

   Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

  ***********************************************************************************/


namespace Xceed.Wpf.Toolkit.Primitives
{
    public class SelectAllSelectorItem : SelectorItem
    {
        #region Members

        private bool _ignoreSelectorChanges = false;

        #endregion

        #region Overrides

        // Do not raise an event when this item is Selected/UnSelected.
        protected override void OnIsSelectedChanged(bool? oldValue, bool? newValue)
        {
            if (_ignoreSelectorChanges)
                return;

            var templatedParent = this.TemplatedParent as SelectAllSelector;
            if (templatedParent != null)
            {
                if (newValue.HasValue)
                {
                    // Select All
                    if (newValue.Value)
                    {
                        templatedParent.SelectAll();
                    }
                    // UnSelect All
                    else
                    {
                        templatedParent.UnSelectAll();
                    }
                }
            }
        }

        #endregion

        #region Internal Methods

        internal void ModifyCurrentSelection(bool? newSelection)
        {
            _ignoreSelectorChanges = true;
            this.IsSelected = newSelection;
            _ignoreSelectorChanges = false;
        }

        #endregion
    }
}
